#encoding:utf-8

#from socket import *
import time
import socket
import host_ip as hi
import data_conversion as dc
import sql_operation as sql
#host = '193.112.152.28'
port = 37777
skt = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建套接字对象
#host = socket.gethostname()	#获取主机名
#ip = socket.gethostbyname(host)
host = hi.get_host_ip()		#获取本机IP
skt.bind((host,port))			#绑定地址到套接字
skt.listen(5)					#设置监听的连接数为5
while True:
	try:
		s,ip_port = skt.accept()	#等待客户端连接
		if ip_port != " ":
			print("客户端已连接")	#在服务器输出连接状态
			print ('当前时间:'+time.strftime("%Y/%m/%d %H:%M:%S",time.localtime()))
			state_true = '连接成功'	#连接状态
			state_true = state_true.encode()#将返回数据转码
			s.sendall(state_true)	#向客户端发送连接状态
		ip = s.recv(102400)			#接收客户端发送的本机IP
		private_ip = ip.decode()	#解码客户端发送的IP
		common_ip = ip_port[0]		#读取客户端公网IP
		common_port = ip_port[1]	#读取客户端使用端口
		print('公网IP:{}\n内网IP:{}\n连接端口:{}'.format(common_ip,private_ip,common_port))#输出客户端的信息
		client_data = s.recv(102400)	#接收客户端发送的账号信息
		client_data = client_data.decode()#将接受的账号信息解码
		user_data = dc.Data_decoding(client_data)#将字符串转换为元组
		print(user_data)
		if user_data[0] == 'login_qy':#登录查询
			use = user_data[1]
			pwd = user_data[2]
			retn_data = sql.query(use,pwd)
			print('账号:{} 密码:{}'.format(use,pwd),end='')#输出账号密码
			if retn_data == '核对成功':
				str1 = '登陆成功'
				str1 = str1.encode()
				s.sendall(str1)
				print('登录成功')
			else:
				str1 = '账号密码错误'
				str1 = str1.encode()
				s.sendall(str1)
				print('登录失败')
		elif user_data[0] == 'reg_info':#新用户注册
			use_n = user_data[1]
			use_p = user_data[2]
			use_t = user_data[3]
			use_m = user_data[4]
			retn_data = sql.insert(use_n,use_p,use_t,use_m)
			if retn_data == '注册成功':
				print(retn_data)
				retn_data = retn_data.encode()
				s.sendall(retn_data)
			else:
				print(retn_data)
				retn_data = retn_data.encode()
				s.sendall(retn_data)

	#v = user_data[0]		#提取账号的宽度
	#v = int(v)					#转换为整型
	#data = user_data[1:]		#提取账号信息
	#use = data[:v]				#提取账号
	#pwd = data[v:]				#提取密码
	except:
		str1 = '服务器错误,请联系管理员'
		str1 = str1.encode()
		s.sendall(str1)
		s.close()
